ECS Fargate でタスク毎のディスク使用容量を確認する方法を教えてください
困っていた内容
ECS Fargate でタスク毎のディスクの使用容量を確認したいです。
Container Insights のメトリクスを確認しましたが、最小粒度はタスク定義ファミリーでタスク毎ではありませんでした。
タスク毎のディスクの使用容量を確認する方法を教えてください。
どう対応すればいいの?
パフォーマンスログイベントを確認してください。
Containers Insights で自動的に生成されるメトリクスは、タスク毎の値を追跡できるほど詳細ではありません。一方で、メトリクスの元となるデータがパフォーマンスログイベントとして CloudWatch Logs に保管されています。
そのため、パフォーマンスログイベントのデータを確認すると、タスク毎のディスク使用容量が確認できます。確認の際は CloudWatch Logs Insights を使用すると柔軟に集計できます。
ECS タスクとコンテナデプロイをモニタリングするように CloudWatch Container Insights を設定する | AWS re:Post
Amazon ECS の Containers Insights によって収集されるメトリクスは、1 つのタスクを追跡できるほど詳細ではありません。これは、利用可能なすべてのメトリクスがタスク定義ファミリレベルで集計され、平均化されるためです。収集されたパフォーマンスデータをより詳細に分析するには、CloudWatch Logs Insights クエリを使用します。
やってみた
CloudWatch コンソールを開き、ログセクションの「ログのインサイト」をクリックします。
パフォーマンスログイベントが保存されたロググループを選択します。
/aws/ecs/containerinsights/<クラスター名>/performance
クエリ(赤枠で囲った部分)に、タスク別のディスク容量を取得するクエリを入力し「クエリの実行」をクリックします。
※必要に応じて
集計の関数(例:max)は変更してください。
stats avg(EphemeralStorageUtilized) as StorageUtilized by TaskId | filter Type="Task"
タスク別のディスク容量(単位:GB)が表示されます。
参考資料
Container Insights のコスト管理に役立てるため、CloudWatch によりログデータからあらゆるメトリクスが自動的に作成されるわけではありません。CloudWatch Logs Insights を使って生のパフォーマンスログイベントを分析すると、メトリクスと粒度レベルの詳細を確認できます。
Container Insights は、埋め込みメトリクス形式を使用して、パフォーマンスログイベントでメトリクスを収集します。ログは CloudWatch Logs に保存されます。CloudWatch は、CloudWatch コンソールで表示できるログから複数のメトリクスを自動的に生成します。また、CloudWatch Logs Insight クエリを使用して収集されるパフォーマンスデータをより深く分析することもできます。